/**
  ******************************************************************************
  * @file    processlocker.h
  * @author  Dragon.Chen
  * @version V1.0.0
  * @date    09-15-2014
  * @brief   进程锁
  ******************************************************************************
  *
  * <h2><center>&copy; COPYRIGHT 2014 上海今中网络科技有限公司 </center></h2>
  ******************************************************************************
  */

#include "locker.h"

/**
  * @brief  信号量初始化
  * @param  argv1:path argv2:id
  * @retval 成功返回信号量标识符，失败返回-1
  */
int sem_process_init(const char *path, int id)
{
    int semid;
    key_t key;

    assert((key = ftok(path, id)) != -1);
    semid = semget(key, 1, IPC_CREAT|IPC_EXCL|0600);        //创建信号量

    if(semid == -1)
        semid = semget(key, 1, 0600);
    else
        semctl(semid, 0, SETVAL, 1);                         //信号量副初值

    return semid;
}

/**
  * @brief  删除信号量
  * @param  NULL
  * @retval NULL
  */
void sem_process_delete(int semid)
{
    semctl(semid, 0, IPC_RMID, 0);
}

/******************* (C) COPYRIGHT 2014 上海今中网络科技有限公司 *****END OF FILE****/


